package com.ricky.config.scene;

import com.ricky.core.net.ByteBuffer;

/**
 * 地图数据配置
 * @author rik
 *
 */
public class MapConfig {

	/**
	 * 地图url根路径
	 */
	public String mapURLPath;
	
	/**
	 * 地图名字
	 */
	public String name;
	
	/**
	 * 地图描述
	 */
	public String discription;
	
	/**
	 * 用来寻路的数组
	 */
	public byte[] data;
	
	/**
	 * 最小寻路单元格宽
	 */
	public int titleWidth=40;
	
	/**
	 * 最小寻路单元格高
	 */
	public int titleHeight=30;
	
	/**
	 * 地图区块格子宽
	 */
	public int gridWidth=350;
	
	/**
	 * 地图区块格子高
	 */
	public int gridHeight=350;
	
	/**
	 * title的列x 宽度
	 */
	public int col=1;
	
	/**
	 * title的行y 高度
	 */
	public int row=1;
	
	/**
	 * 小地图url路径
	 */
	public String smallMapURL="";
	
	/**
	 * 地图宽
	 */
	public int width=1;
	
	/**
	 * 地图高
	 */
	public int height=1;
	
	/**
	 * 怪物配置
	 */
	public String monster="";
	
	/**
	 * ai脚本
	 */
	public String aiScript="";

	/**
	 * 出生点坐标
	 * [[x,y,],[x,y]]
	 */
	public int[][] borns;
	
	public int[] getBorn(int i)
	{
		int[] re=new int[2];
		int x1;int x2;int y1;int y2;int len;

		if(borns.length>i)
		{
			int[] pos=borns[i];
			x1=pos[0];
			y1=pos[1];
			x2=pos[2];
			y2=pos[3];
			len=Math.abs(x1-x2)+1;
			x1=(int) (x1+Math.random()*len);
			len=Math.abs(y2-y1)+1;
			y1=(int) (y1+Math.random()*len);
			re[0]=x1;
			re[1]=y1;
		}
		return re;
	}
	
	public static MapConfig decoder(ByteBuffer bbf)
	{
		MapConfig map=new MapConfig();
		bbf.position(0);
		map.name=bbf.readUTF();
		map.mapURLPath=bbf.readUTF();
		map.discription=bbf.readUTF();
		map.width=bbf.readInt();
		map.height=bbf.readInt();
		map.gridWidth=bbf.readInt();
		map.gridHeight=bbf.readInt();
		map.smallMapURL=bbf.readUTF();
		
		int l=bbf.readInt();
		byte b;
		map.data=new byte[l];
		for(int i=0;i<l;i++)
		{
			b=(byte) bbf.readByte();
			map.data[i]=b;
		}
		
		map.monster=bbf.readUTF();
//		if(bbf.available()>0)
//		{
			map.aiScript=bbf.readUTF();
			String bornstr=bbf.readUTF();
			String[] pos=bornstr.split(",");
			int len=pos.length/4;
			int x,y,x1,y1;
			int[][] borns=new int[len][4];
			int i=0;int j=0;
			for (;i< len;i++)
			{
				j=i*4;
				x=Integer.parseInt(pos[j]);
				y=Integer.parseInt(pos[j+1]);
				x1=Integer.parseInt(pos[j+2]);
				y1=Integer.parseInt(pos[j+3]);
				borns[i][0]=x;
				borns[i][1]=y;
				borns[i][2]=x1;
				borns[i][3]=y1;
			}
			map.borns=borns;
//		}
		
		return map;
	}
}
